home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / lov114 / lovr.doc < prev    next >
Text File  |  1989-03-14  |  36KB  |  994 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.                          =======================
  7.                          LOVR 1.14 DOCUMENTATION
  8.                          =======================
  9.  
  10.  
  11.  
  12.      LICENSE AND WARRANTY
  13.      --------------------
  14.  
  15.      LOVR copyright 1988, 1989 by Michael E. Devore.  All rights
  16.      reserved.
  17.  
  18.      The copyright holder licenses you to use, copy, and distribute
  19.      LOVR for yourself and others subject to the following four
  20.      restrictions:
  21.  
  22.      1.  LOVR must be copied and distributed only in its original,
  23.          unmodified form.  This includes the LOVR program object
  24.          module, the LOVR documentation, and all example files.
  25.  
  26.      2.  No fee or other compensation can be charged for copying or
  27.          distributing the program.  The only exceptions are user
  28.          groups and incorporated public domain and shareware software
  29.          distributors who may charge a handling fee for its
  30.          distribution NOT TO EXCEED $8.00 PER COPY.  ONLY ONE COPY
  31.          PER COMPUTER DISK IS ALLOWED FOR SUCH DISTRIBUTION.
  32.  
  33.      3.  LOVR may NOT be distributed in combination with any other
  34.          products, software or hardware, without the express written
  35.          permission of Michael E. Devore.
  36.  
  37.      4.  LOVR is for your personal use only and may NOT be used
  38.          for commercial applications.  See the PLOVR program
  39.          description later in this documentation file if you need to
  40.          use a version of LOVR commercially or need a custom version
  41.          of LOVR.
  42.  
  43.      There is no warranty of any kind with LOVR and the copyright
  44.      holder is not liable for any damages of any kind or nature that
  45.      may occur due to use of, or inability to use, this software.  By
  46.      using or distributing LOVR you agree to these terms.  If you do
  47.      not agree to these terms, you may not use or distribute LOVR.
  48.  
  49.      Although it is the copyright holder's intention to fix any
  50.      errors in LOVR and to allow its noncommercial use free of
  51.      charge, the copyright holder is NOT LEGALLY OBLIGATED TO DO SO.
  52.  
  53.      This document copyright 1988, 1989 by Michael E. Devore.  All
  54.      rights reserved.
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.      License and Warranty                             page 1 of 1
  63.  
  64.  
  65.  
  66.  
  67.  
  68.      LOVR FILES
  69.      ---------
  70.  
  71.      Included in the LOVR package should be the following files:
  72.  
  73.      LOVR.OBJ             (LOVR linkable object module)
  74.      LOVR.DOC             (LOVR documentation file, the file you are
  75.                            reading now)
  76.  
  77.      QBNEST.BAS           (QuickBASIC 4.0 example files)
  78.      BNEST1.BAS                       .
  79.      BNEST2.BAS                       .
  80.      BNEST3.BAS                       .
  81.      BNEST4.BAS
  82.  
  83.      COW.C                (Turbo C example files)
  84.      FARM.C                          .
  85.      HORSE.C                         .
  86.      PIG.C                           .
  87.      PIGLET.C
  88.      SHEEP.C
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.      LOVR files                                       page 1 of 1
  125.  
  126.  
  127.  
  128.  
  129.  
  130.      OVERVIEW
  131.      --------
  132.  
  133.      LOVR is an overlay manager for QuickBASIC versions 4.x and all
  134.      versions of Turbo C.  LOVR has also been sucessfully tested with
  135.      assembly language code written using MASM 5.0 and previous
  136.      versions.  LOVR should work with other languages as well IF the
  137.      languages compile to Microsoft Overlay LINKable object modules
  138.      and use direct calls to overlay procedures or functions.
  139.  
  140.      In case this is your first exposure to overlays, the following
  141.      is a quick overview of what overlay's are, what an overlay
  142.      manager is, and why such a program is useful.
  143.  
  144.      Overlays are portions of program code which are loaded from disk
  145.      into memory on an as-needed basis.
  146.  
  147.      Use of overlays allows an extremely large program (potentially
  148.      several megabytes of code in size) to execute in a much smaller
  149.      amount of memory.  Code from the program's .EXE file is brought
  150.      in from disk (overlaid) only when the program needs it.  Since
  151.      all overlays share the same memory space, the memory
  152.      requirements can be much less than the total code size of the
  153.      program.  Also, there is no longer a need for the clumsy
  154.      chaining or spawning to another file that large QuickBASIC or C
  155.      environments frequently require.
  156.  
  157.      There is a tradeoff for these advantages.  The tradeoff is the
  158.      time and code overhead necessary to read overlays in from disk.
  159.      If you make the decision to use overlays with your program, any
  160.      timing critical code should not be divided between overlays.
  161.      For most applications, though, the relatively small amount of
  162.      time it takes to read in an overlay from disk is not important
  163.      if transfers to overlays are not overdone or poorly timed.
  164.      Constant shuttling between overlays is an exercise guaranteed to
  165.      give disappointing results.  A little bit of thought will go a
  166.      long way towards efficient overlay operation.
  167.  
  168.      LINK.EXE, Microsoft's Overlay Linker included with MS-DOS and
  169.      Microsoft languages, versions 3.x and some 2.x versions, allow
  170.      creation of overlaid versions of programs.  However, LINK only
  171.      inserts software interrupts and some overlay information in the
  172.      program for an overlay manager to use.  LINK does not generate
  173.      the actual code that loads the proper overlay from disk and
  174.      passes control to it.  That is a job for an overlay manager, and
  175.      that's where LOVR comes in.
  176.  
  177.      LOVR "manages" the overlays.  LOVR loads overlays from disk at
  178.      the appropriate time and jumps program execution to the overlay
  179.      code.
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.      What is LOVR?                                    page 1 of 1
  187.  
  188.  
  189.  
  190.  
  191.  
  192.      LOVR SPECIFICATIONS AND REQUIREMENTS
  193.      ------------------------------------
  194.  
  195.      *  LOVR requires an IBM PC or PS/2 microcomputer or close
  196.         compatible using MS-DOS or PC-DOS operating system version
  197.         2.1 or later.  Microsoft's Overlay Linker, version 3.06 or
  198.         later, and some versions of Microsoft's Object Linker
  199.         versions 3.05 or earlier, must be used to link LOVR.OBJ with
  200.         the object modules of a program containing overlays.
  201.  
  202.      *  LOVR adds approximately 9K bytes to your program's size when
  203.         it is linked in.  LOVR will also use a maximum of twenty
  204.         bytes of the overlaid program's stack during its operation.
  205.  
  206.      *  The object files created by versions of QuickBASIC earlier
  207.         than 4.0 abort with an error if a link is attempted with
  208.         overlays.  Therefore, LOVR will NOT work with versions of
  209.         QuickBASIC earlier than 4.0.  This is an unfortunate
  210.         limitation of the earlier versions of QuickBASIC and not an
  211.         error or shortcoming in LOVR.
  212.  
  213.      *  Calls to a function or procedure FROM the root code TO
  214.         overlay code, or from one overlay to another (INTERoverlay
  215.         calls) MUST be direct, that is, not indirectly through a
  216.         pointer.  This restriction is necessary because Microsoft
  217.         LINK can only set up an interrupt invoking the overlay
  218.         manager for direct calls in program code.  For assembly
  219.         language programs this means that interoverlay calls to
  220.         procedures must be coded as CALL ADDR, not CALL MEM/REG.  For
  221.         'C', interoverlay function calls should be directly called,
  222.         not called through a pointer to a function.  Calls within an
  223.         overlay (INTRAoverlay calls), within the root code, or FROM
  224.         an overlay TO the root can be made indirectly.  QuickBASIC
  225.         programs should not be affected by this restriction unless
  226.         non-BASIC modules which use indirect calls to overlays are
  227.         also linked in.
  228.  
  229.      *  Microsoft's Overlay Linker requires the presence of at least
  230.         one overlay when linking LOVR.OBJ with a program's object
  231.         modules.  An attempt to link LOVR.OBJ with a program that
  232.         does not have at least one overlay will cause LINK to abort
  233.         with several "Unresolved external" errors.
  234.  
  235.      *  LOVR has a limit of twelve overlays in a program.  More than
  236.         twelve overlays will cause LOVR to abort with a "Too many
  237.         overlays." error upon startup.  PLOVR, the enhanced version
  238.         of LOVR, has a limit of 63 overlays -- LINK's current
  239.         maximum.
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.      LOVR specifications and requirements             page 1 of 2
  249.  
  250.  
  251.  
  252.  
  253.  
  254.      *  LOVR supports calls from one overlay to another (nesting).
  255.         Overlays can be nested up to four levels.  An attempt to nest
  256.         deeper than four overlays will cause LOVR to abort with an
  257.         "Overlays nested deeper than 4 levels." error.  PLOVR
  258.         supports a nesting depth of 32 levels.
  259.  
  260.      *  LOVR requires use of the Microsoft LINK default overlay
  261.         interrupt 63 (3fh).  Do not use the /OVERLAYINTERRUPT or /O
  262.         option of LINK to change the overlay manager interrupt.
  263.         PLOVR supports changing the default overlay manager interrupt
  264.         via the /O option of LINK.
  265.  
  266.      *  LOVR WILL work with the /EXEPACK or /E option of LINK, if the
  267.         program containing overlays is suitable for using the
  268.         /EXEPACK option.  LOVR will work with the files packed using
  269.         the EXEPACK.EXE utility as well.
  270.  
  271.      *  LOVR uses the PATH environment variable when searching for
  272.         the overlaid program if it is not in the current directory.
  273.         If LOVR attempts to load an overlay and the program
  274.         containing that overlay is neither in the current directory
  275.         nor in a directory in the PATH environement variable, LOVR
  276.         will abort with a "File not found." error.
  277.  
  278.      *  After your program has been linked with LOVR.OBJ, do NOT
  279.         change the program's name.  LOVR attempts to load overlays
  280.         from the executable file name assigned during the linking
  281.         process.  If the file name has been changed, LOVR will abort
  282.         with a "File not found" error.  To change the name of your
  283.         program, you must relink the program using the new name for
  284.         your executable file in the link syntax.
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.      LOVR specifications and requirements             page 2 of 2
  311.  
  312.  
  313.  
  314.  
  315.  
  316.      USING LOVR
  317.      ----------
  318.  
  319.      To demonstrate how to use LINK and LOVR.OBJ to set up overlays,
  320.      a sample QuickBASIC program and a sample Turbo C program are
  321.      included in the LOVR package.  Although these files perform no
  322.      useful function, they do demonstrate both overlay nesting and
  323.      parameter passing to another overlay.
  324.  
  325.  
  326.                            QuickBASIC 4.x use
  327.  
  328.      Since QuickBASIC programs need a QuickBASIC library to link
  329.      correctly, you must own or have access to QuickBASIC 4.x to try
  330.      these example files.  No .OBJ files are included due to the
  331.      different versions of QuickBASIC 4.x.  Compile the source files
  332.      with your BC.EXE program.  These QuickBASIC source files also
  333.      demonstrate how to use COMMON to share variables between more
  334.      than one module if one module is in an overlay.  If you have
  335.      many variables in your COMMONs, you will probably want to
  336.      consider using $INCLUDE files to declare the variables.
  337.      This will eliminate the need to retype variables in all the
  338.      source modules if you make a change, and reduces the chance
  339.      of erroneous entry.
  340.  
  341.      Link together the LOVR and QuickBASIC .OBJ files, enclosing in
  342.      parentheses the modules you want to be overlays.  Make sure that
  343.      you use at least one overlay or LINK will return an unresolved
  344.      externals error.  If you link the example object files together
  345.      like this:
  346.  
  347.           link lovr+qbnest+(bnest1+bnest2+bnest3)+(bnest4),qbnest;
  348.  
  349.      a main .EXE file called QBNEST.EXE will be created.  This
  350.      QBNEST.EXE file will contain the root .EXE file QBNEST comprised
  351.      of the code of the LOVR and QBNEST object modules and will also
  352.      contain two overlay files appended to the root .EXE file.  One
  353.      overlay file will contain the code of the BNEST1, BNEST2, and
  354.      BNEST3 modules, the other will contain the code of the BNEST4
  355.      module.
  356.  
  357.      The .EXE file created is a standard .EXE file.  Type QBNEST at
  358.      the DOS prompt, and the program will begin to run.  As program
  359.      code is needed from an overlay, that overlay is loaded from disk
  360.      by the LOVR code if it is not already loaded, and program
  361.      execution continues.  You may be able to see the program stop
  362.      running when an overlay is being loaded, depending upon the
  363.      speed of your disk and whether or not you are using disk caching
  364.      software.
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.      Using LOVR                                       page 1 of 5
  373.  
  374.  
  375.  
  376.  
  377.  
  378.      The amount of memory required to load the QBNEST.EXE file you
  379.      created, or any file created by LINK using overlays, is equal to
  380.      the size of the root file (including LOVR.OBJ code) plus the
  381.      size of the largest overlay file plus any program overhead.
  382.      This brings up an important point.  There is no advantage to
  383.      only using one overlay in a program since space must be
  384.      allocated for it in memory during program execution anyway.
  385.      There is only the disadvantage of the overlay overhead.  In
  386.      other words, while the link commands:
  387.  
  388.           link lovr+qbnest+(bnest1)+bnest2+bnest3+bnest4,qbnest;
  389.  
  390.           link /e lovr+qbnest+(bnest1+bnest2+bnest3+bnest4),qbnest;
  391.  
  392.           link lovr+qbnest+bnest1+(bnest2+bnest3)+bnest4,qbnest;
  393.  
  394.      are all valid, there is no useful purpose served by linking
  395.      overlays in this fashion.  Two or more overlay files in the link
  396.      command is the way to go.
  397.  
  398.      A more appropriate example of linking using overlays would be:
  399.  
  400.           link /exepack lovr+qbnest+(bnest1)+(bnest2)+(bnest4)+bnest3,
  401.           qbnest;
  402.  
  403.      Here there will be three overlay files containing the code of,
  404.      respectively, BNEST1, BNEST2, and BNEST4, and a root file
  405.      containing the LOVR, QBNEST and BNEST3 code.  Note that the link
  406.      syntax includes the LINK /EXEPACK option.  The /EXEPACK or /E
  407.      option of Microsoft's Overlay Linker may successfully be used
  408.      with LOVR.OBJ for those programs suitable for the option.
  409.  
  410.      The only overlay combination not allowed by LOVR is one where
  411.      the LOVR or root (in this case QBNEST) object modules are linked
  412.      as an overlay.  LOVR and QBNEST contain the start up code which
  413.      must be in loaded in memory during the beginning of the
  414.      program's execution.
  415.  
  416.      To really stretch LOVR to its limits, link each of the BNEST
  417.      modules in a separate overlay.  This forces LOVR to nest
  418.      overlays to its four level maximum.
  419.  
  420.      To use your own QuickBASIC 4.x programs with overlays you should
  421.      compile the files using BC.EXE.  Overlays will not work with the
  422.      runtime file BRUNxx.EXE so the /O option must be used to compile
  423.      QuickBASIC 4.x programs.
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.      Using LOVR                                       page 2 of 5
  435.  
  436.  
  437.  
  438.  
  439.  
  440.                                Turbo C Use
  441.  
  442.      To use the Turbo C example files, you need to have a C compiler
  443.      compatible with the Turbo C source files COW.C, FARM.C, HORSE.C,
  444.      PIG.C, PIGLET.C, and SHEEP.C.  No .OBJ files are included due to
  445.      the many different versions of C compilers available; object
  446.      modules for C are usually compiler version specific.  Compile
  447.      the source files with your own compiler.
  448.  
  449.      Link together the LOVR and Turbo C .OBJ files, enclosing in
  450.      parentheses the modules you want to be overlays.  Make sure that
  451.      you use at least one overlay or LINK will return an unresolved
  452.      externals error.  If you link the example object files together
  453.      like this:
  454.  
  455.           link lovr+c0m+farm+(horse+piglet)+(cow+pig+sheep),farm,nul,
  456.           emu+mathm+cm;
  457.  
  458.      a main .EXE file called FARM.EXE will be created.  This FARM.EXE
  459.      file will contain the root .EXE file FARM comprised of the code
  460.      of the LOVR, C0M, and FARM object modules and will also contain
  461.      two overlay files appended to the root .EXE file.  One overlay
  462.      file will contain the code of the HORSE and PIGLET modules, the
  463.      other will contain the code of the COW, PIG, and SHEEP modules.
  464.      Although the medium memory model was used for this example, the
  465.      large and huge models (with the corresponding C0L, MATHL,
  466.      and CL or C0H, MATHH, and CH object files) should work
  467.      identically if the source code is recompiled.
  468.  
  469.      Type FARM at the command line, and the program will begin
  470.      to run.  You may also type FARM MACDONALD to see the command
  471.      line argument in use.  As program code is needed from an
  472.      overlay, that overlay is loaded from disk if necessary, and
  473.      program execution continues.  You may be able to see the program
  474.      stop running when an overlay is being loaded, depending upon the
  475.      speed of your disk and whether or not you are using disk caching
  476.      software.  Remember, you must use Microsoft's LINK when linking
  477.      this or any other Turbo C program for use with LOVR.  The copy
  478.      of TLINK included with Turbo C does not support overlays.
  479.  
  480.  
  481.  
  482.  
  483.  
  484.  
  485.  
  486.  
  487.  
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.      Using LOVR                                       page 3 of 5
  497.  
  498.  
  499.  
  500.  
  501.  
  502.      The amount of memory required to load the FARM.EXE file you
  503.      created, or any file created by Microsoft's Overlay Linker using
  504.      overlays, is equal to the size of the root file (including LOVR)
  505.      plus the size of the largest overlay file plus any program
  506.      overhead.  There is no advantage to only using one overlay in a
  507.      program since space must be allocated for it in memory during
  508.      program execution anyway.  There is only the disadvantage of the
  509.      overlay overhead.  In other words, while the link commands:
  510.  
  511.  
  512.           link lovr+c0m+farm+(horse)+piglet+cow+pig+sheep,farm,nul,
  513.           emu+mathm+cm;
  514.  
  515.           link lovr+c0m+farm+(horse+piglet+cow+pig+sheep),farm,nul,
  516.           emu+mathm+cm;
  517.  
  518.           link /e lovr+c0m+farm+horse+(piglet+cow)+pig+sheep,farm,
  519.           nul,emu+mathm+cm;
  520.  
  521.      are all valid, there is no useful purpose served by linking
  522.      overlays in this fashion.  Two or more overlay files in the link
  523.      command is the way to go.
  524.  
  525.      A more appropriate example of linking using overlays would be:
  526.  
  527.           link lovr+c0m+farm+(horse)+(piglet+cow)+(pig)+sheep,farm,
  528.           nul,emu+mathm+cm;
  529.  
  530.      Here there will be three overlay files containing the code of,
  531.      respectively, HORSE; PIGLET and COW; and PIG, and a root file
  532.      containing the LOVR, C0M, FARM, and SHEEP code.
  533.  
  534.      The only overlay combination not allowed by LOVR is one where
  535.      the LOVR or root (in this case C0M and FARM) object modules are
  536.      linked as an overlay.  LOVR, C0M, and FARM contain the start up
  537.      code which must be in loaded in memory during the beginning of
  538.      the program's execution.
  539.  
  540.  
  541.                      QuickBASIC 4.x and Turbo C Use
  542.  
  543.      Feel free to try any permutation of overlays allowed by these
  544.      examples.  LOVR should work with any of them as long as you stay
  545.      within the restrictions already outlined.  It is especially
  546.      important to remember not to put the initial entry code or
  547.      LOVR.OBJ in an overlay.  The start up code must be in memory
  548.      when the program is first loaded, i.e. in the root code.
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.      Using LOVR                                       page 4 of 5
  559.  
  560.  
  561.  
  562.  
  563.  
  564.      You may have noticed that these example files are all small
  565.      enough to fit into memory without overlays.  You may even be
  566.      asking yourself how you really know that LOVR is bringing the
  567.      overlays in as needed instead of sneaking everything in at once?
  568.      In fact, how do you know that LOVR is using the overlay manager
  569.      interrupt at all?
  570.  
  571.      First, you can try running a file linked with overlays without
  572.      linking in LOVR.OBJ.  If you do this your computer will probably
  573.      lock up and need to be turned off or reset before it can be used
  574.      again.  This is because your program is using interrupt 63 which
  575.      LOVR has not initialized to point to code that manages the
  576.      overlays.  Your program tries to transfer control to whatever
  577.      random address happens to be at the memory location that
  578.      corresponds to the address at interrupt 63, leading to
  579.      unpredictable results.  This is also known as a "thin air"
  580.      transfer.
  581.  
  582.      The second test you can do is transfer your overlaid program
  583.      .EXE file to a floppy disk and disable any disk caching.  Now
  584.      run LOVR off of the floppy disk drive.  You should see the
  585.      floppy disk drive light come on during execution of the example
  586.      program as overlays are loaded from disk.  For maximum effect
  587.      you may want to link your program using as many overlays as
  588.      possible, up to the maximum of twelve.
  589.  
  590.      It is important to understand how the use of overlays can affect
  591.      a program's performance.  Time critical code should not be
  592.      divided between two overlays.  Depending upon the speed of the
  593.      disk drive used and the size of the overlay file, the time to
  594.      load each overlay from disk can be several seconds.  Extremely
  595.      time critical code should also not be divided the root code and
  596.      an overlay.  The execution time overhead of the overlay manager
  597.      code can range from several microseconds up to a few
  598.      milliseconds depending upon the type of machine used to run the
  599.      overlaid program.
  600.  
  601.      There is NO time penalty involved in calling routines FROM a
  602.      loaded overlay TO the root code or from one code module to
  603.      another WITHIN the same overlay file.  There IS a time penalty
  604.      in calling routines FROM the root code TO an overlay file.  This
  605.      time penalty will range from several microseconds with an
  606.      already loaded overlay file on a fast computer to several
  607.      seconds with an overlay file that needs to be loaded on a
  608.      computer with a slow disk drive.
  609.  
  610.  
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618.  
  619.  
  620.      Using LOVR                                       page 5 of 5
  621.  
  622.  
  623.  
  624.  
  625.  
  626.      PLOVR -- An Enhanced Commercial Version of LOVR
  627.      -----------------------------------------------
  628.  
  629.      If you wish to sell a program that uses LOVR.OBJ to operate, or
  630.      if you just want a more powerful version of LOVR, an enhanced
  631.      version of LOVR called PLOVR can be purchased for $50.  You may
  632.      reduce this amount by five dollars (to $45.00) if you send me
  633.      the name and location of the bulletin board, software
  634.      distributor, or place where you received your copy of LOVR.  If
  635.      someone else gave you the copy of LOVR, ask him or her where
  636.      they got it from.  The reason for the $5.00 discount is that
  637.      this information is valuable to me in determining distribution
  638.      strategies.
  639.  
  640.      PLOVR adds the following three enhancements to LOVR:
  641.  
  642.           1.  PLOVR allows up to the Microsoft LINK maximum of 63
  643.               overlays.
  644.  
  645.           2.  The depth that overlays can nest to is increased to 32
  646.               levels with PLOVR.
  647.  
  648.           3.  PLOVR works with any overlay interrupt specified by the
  649.               /O or /OVERLAYINTERRUPT option of LINK.
  650.  
  651.      In addition, the PLOVR package includes a smaller copy of
  652.      PLOVR.OBJ called SPLOVR.OBJ, which takes up 5K of program space
  653.      in the root code, instead of 9K.  The trade-off for the decrease
  654.      in space is an occasional small increase in time to load an
  655.      overlay from disk in some circumstances, but SPLOVR can be
  656.      useful for those running close to the memory space limit even
  657.      with overlays.
  658.  
  659.      PLOVR also dispenses with the runtime copyright notice.  This
  660.      removal of the runtime copyright notice does not suggest, and
  661.      should not be taken to suggest, that PLOVR is not copyrighted.
  662.      A potentially distracting message is simply not displayed.
  663.  
  664.      A small printed manual is provided with PLOVR for your
  665.      convenience.
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  
  675.  
  676.  
  677.  
  678.  
  679.  
  680.  
  681.  
  682.      PLOVR                                            page 1 of 2
  683.  
  684.  
  685.  
  686.  
  687.  
  688.      For those with particular needs, there are customized or special
  689.      versions of PLOVR available.  One version of PLOVR allows a user
  690.      to link in his or her own custom error-handler if a DOS error
  691.      occurs inside of the overlay manager.  There is no extra charge
  692.      for a customized change to the standard version of PLOVR IF the
  693.      change is deemed to have potential use for other PLOVR users and
  694.      is not too major.  Very specialized or large changes will cost
  695.      more than the standard PLOVR version.  Please contact me if you
  696.      require a special version of PLOVR.
  697.  
  698.      No royalties are charged for use of PLOVR.  This means that you
  699.      need only purchase a single version of PLOVR for use with your
  700.      program no matter how many copies of your program you
  701.      distribute.  Purchase of PLOVR entitles the purchaser to
  702.      telephone support.  I reserve the right to require that all
  703.      calls be at the purchaser's expense.
  704.  
  705.      Note that purchase of PLOVR is MANDATORY if you wish to use a
  706.      version of LOVR for distribution with a commercial or
  707.      potentially commercial application -- including programs
  708.      distributed as shareware.  PLOVR is the only version of the
  709.      overlay manager permitted for use with such applications.
  710.  
  711.      To purchase PLOVR send $50.00 in US dollars -- $45.00 if you
  712.      include a description of where you heard of PLOVR -- by check or
  713.      money order with your shipping address to:
  714.  
  715.          Michael E. Devore
  716.          Devore Software & Consulting
  717.          403 West Charles
  718.          Champaign, IL  61820
  719.  
  720.      Please state your preference for either 5 1/4 or 3 1/2 inch
  721.      diskettes.
  722.  
  723.      All information contained herein, including the cost of PLOVR,
  724.      is subject to change without notice.
  725.  
  726.      PLOVR copyright 1988,1989 by Michael E. Devore
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.  
  740.  
  741.  
  742.  
  743.  
  744.      PLOVR                                            page 2 of 2
  745.  
  746.  
  747.  
  748.  
  749.  
  750.      TROUBLE-SHOOTING
  751.      ----------------
  752.  
  753.      Check to make sure that you have compiled your program properly.
  754.      QuickBASIC users should compile source files outside of the
  755.      QuickBASIC integrated environment with BC.EXE using the /O
  756.      option.
  757.  
  758.      Turbo C and MASM users must compile their source files using a
  759.      large or far code memory model.  For MASM versions prior to
  760.      5.0 this means that overlay procedures called from the root
  761.      or another overlay must be declared FAR.
  762.  
  763.      Use a recent version of Microsoft's Overlay Linker when linking
  764.      overlays for LOVR.  LOVR was tested with Microsoft LINK versions
  765.      3.05, 3.06, 3.60, 3.61, 3.64, and 3.69.  2.x versions of LINK
  766.      may not work properly.  TLINK, PLINK or other proprietary
  767.      linkers will not work with LOVR.  In addition, if you experience
  768.      problems with LOVR, try linking with a different version of
  769.      Microsoft's Overlay Linker -- at least one version of the linker
  770.      has an error that causes improper overlay operation.
  771.  
  772.      Check your link syntax, making sure that neither LOVR nor the
  773.      initial entry or main program module is in an overlay, and that
  774.      you are not exceeding twelve overlay files or nesting overlays
  775.      deeper than four levels.
  776.  
  777.      Carefully read the SPECIFICATIONS AND REQUIREMENTS sections to
  778.      make sure that you are using the LOVR programs in accordance
  779.      with their operating requirements.  One possible mistake for
  780.      those using LOVR with 'C' or assembly language is to indirectly
  781.      call a function or procedure in one overlay from another or from
  782.      the root to an overlay.  Microsoft LINK requires direct calls to
  783.      overlay procedures for it to correctly set up the overlay
  784.      manager interrupts.
  785.  
  786.      If you are sure that you are compiling and linking properly and
  787.      operating LOVR within its specifications and requirements, make
  788.      sure that the error is not in your program.  If memory size
  789.      allows, compile your program without overlays and test it.  If
  790.      the size of your program is too large for all of it to fit in
  791.      memory, try to compile only the code that is giving you problems
  792.      and see if it works correctly without overlays.
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.      Trouble-shooting                                 page 1 of 2
  807.  
  808.  
  809.  
  810.  
  811.  
  812.      If your program still fails after you have eliminated all
  813.      suspects except for LOVR, please contact me so I can fix the
  814.      problem as soon as possible.  However, I will need to know the
  815.      circumstances.  What error message, if any, does LOVR print?
  816.      What version and options of LINK were used?  What hardware and
  817.      software configuration was your machine running under when the
  818.      error occurred?  What language was the program written in?
  819.  
  820.      If an error is in LOVR and you are the first person to find the
  821.      error, I will send you a free corrected version as soon as it is
  822.      available.  The corrected version will either be sent by
  823.      electronic mail if possible, or regular USPS mail if not.  If
  824.      you are not the first person to find the error and do not wish
  825.      to wait for the corrected version to reach general distribution
  826.      channels, you may send $6.00 to cover shipping and handling for
  827.      the latest version to the address below.
  828.  
  829.      If you subscribe to either the CompuServe Information Service,
  830.      the GEnie Information Service, or the Byte Information Exchange,
  831.      you can send me electronic mail at the appropriate e-mail
  832.      address below.  Barring vacation or unusual circumstances, I
  833.      check in to the CIS and GEnie services at least once a week --
  834.      usually more frequently -- and BIX at least twice a month.  Your
  835.      e-mail will be acknowledged as soon as I receive it.
  836.  
  837.      If you do not subscribe to either CompuServe, GEnie, or BIX you
  838.      should contact me through USPS mail at the address listed at the
  839.      end of this section.
  840.  
  841.      The realities of life and need for income being what they are,
  842.      my billable work and support of my commercial software has
  843.      priority over fixes to and questions concerning LOVR.  If I have
  844.      a full work schedule, a fix or question may take more time to
  845.      respond to than either you or I would prefer.  This is
  846.      unfortunate, but unavoidable.
  847.  
  848.      MAILING ADDRESS:
  849.           Michael E. Devore
  850.           Devore Software & Consulting
  851.           403 West Charles
  852.           Champaign, IL  61820
  853.  
  854.      E-MAIL ADDRESSES:
  855.           CompuServe      71540,62
  856.           GEnie           MDEVORE
  857.           BIX             mdevore
  858.  
  859.  
  860.  
  861.  
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.      Trouble-shooting                                 page 2 of 2
  869.  
  870.  
  871.  
  872.  
  873.  
  874.      COMMENTS (Mine and Yours)
  875.      -------------------------
  876.  
  877.      LOVR is shareware.  No, that does not mean I am going to ask you
  878.      for money if you use it regularly.  What it means is that LOVR
  879.      is a zero dollar registration, copyrighted program with some use
  880.      restrictions, most notably that it is only for noncommercial
  881.      use.  If you use, or plan to use, LOVR.OBJ in one or more
  882.      programs over a period of a month or more, then you should
  883.      register it.  To register, all I ask is that you send me your
  884.      home address and the name and location of the bulletin board,
  885.      software distributor, or place where you received your copy of
  886.      LOVR.  If someone else gave you the copy of LOVR, ask him or her
  887.      where they got it from.  You may send this information to me via
  888.      US mail or electronic mail.
  889.  
  890.      I will not put your address on some mailing list or deluge you
  891.      with advertisements.  The reason I ask for this information is
  892.      that it is very valuable to me.  Knowing where LOVR is being
  893.      distributed, what distribution sites are most successful, and
  894.      the address spread of those who frequent the distribution sites
  895.      is extremely helpful.  Also, the simple presence of feedback
  896.      helps just by assuring me that LOVR is a useful tool.
  897.  
  898.      If you feel that you must reward me monetarily or you do not
  899.      wish to divulge where you got your copy of LOVR for whatever
  900.      reason, then send me a letter with your return address and a
  901.      quarter (25 cents) inside as an alternate method to register
  902.      LOVR.  This will help cover the postage cost of those who send
  903.      letters asking for help without sending a self-addressed stamped
  904.      envelope and the overhead cost of receiving and answering e-mail
  905.      queries.
  906.  
  907.      LOVR should be powerful enough for most programmers needing a
  908.      solution to the problem of a personal program that has gotten
  909.      too large to fit in available memory.  Those programmers or
  910.      developers who wish to use this type of overlay manager for a
  911.      commercial application should be able to afford the enhanced
  912.      PLOVR version.  Please note that PLOVR is a retail product: it
  913.      is not the registered version of LOVR, nor is it distributed as
  914.      shareware.
  915.  
  916.      If you have an idea for an improvement to LOVR, a comment or
  917.      question about LOVR, or even a complaint about LOVR, please send
  918.      it to either my USPS mailing address or one of the e-mail
  919.      addresses below.  I am receptive to new ideas and constructive
  920.      criticism, regardless of whether or not you are a registered
  921.      user.
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  
  929.  
  930.      Comments                                         page 1 of 2
  931.  
  932.  
  933.  
  934.  
  935.  
  936.      LOVR began life as an offshoot of OVL, current version 3.01,
  937.      another linkable overlay manager I wrote that has several bells
  938.      and whistles.  These extra features include multiple overlay
  939.      areas, support for separate overlay files, a utility to allow
  940.      use of MS LINK with overlays for Clipper and indirect calls to
  941.      overlays, and several other handy features.  LOVR is less
  942.      powerful than OVL, but it is also less complicated, smaller,
  943.      works better with some debuggers, and the commercial version of
  944.      LOVR (PLOVR) costs less than the commercial version of OVL
  945.      (PROVL).
  946.  
  947.      If you wish a copy of OVL and you have been unsuccessful in
  948.      obtaining a copy, you may send $6.00 to cover shipping and
  949.      handling for the latest version to the USPS address below.
  950.  
  951.  
  952.           Michael E. Devore
  953.           Devore Software & Consulting
  954.           403 West Charles
  955.           Champaign, IL  61820
  956.  
  957.           CompuServe      71540,62
  958.           GEnie           MDEVORE
  959.           BIX             mdevore
  960.  
  961.  
  962.                    _______
  963.               ____|__     |               (tm)
  964.            --|       |    |-------------------
  965.              |   ____|__  |  Association of
  966.              |  |       |_|  Shareware
  967.              |__|   o   |    Professionals
  968.            -----|   |   |---------------------
  969.                 |___|___|    MEMBER
  970.             
  971.  
  972.      This program is produced by a member of the Association of
  973.      Shareware Professionals (ASP).  ASP wants to make sure that the
  974.      shareware principle works for you. If you are unable to resolve
  975.      a shareware-related problem with an ASP member by contacting the
  976.      member directly, ASP may be able to help. The ASP Ombudsman can
  977.      help you resolve a dispute or problem with an ASP member, but
  978.      does not provide technical support for members' products. Please
  979.      write to the ASP Ombudsman at P.O. Box 5786, Bellevue, WA 98006
  980.      or send a Compuserve message via easyplex to ASP Ombudsman
  981.      70007,3536.
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.      Comments                                         page 2 of 2
  993.  
  994.